package com.example.demo.controller; /**
 * 引入静态路由“router”
 */
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.ServerResponse;

import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;

/**
 *
 * http://localhost:8080/times
 * route 添加服务器推送消息成功
 * @author 咸鱼
 * @date 2018/6/28 16:55
 */
@Configuration
public class RouterConfig {
    private TimeHandler timeHandler;

    @Autowired
    public RouterConfig(TimeHandler timeHandler) {
        this.timeHandler = timeHandler;
    }

    /**
     * 注意方法名不能和类名重复
     */
    @Bean
    public RouterFunction<ServerResponse> timeRouter(){
        /**
         * 路由的写法也是固定的，第一个参数：路径，第二个参数：方法
         *     这里的转换成lambda表达式是：request -> timeHandler.getTime(request),隐藏了一个ServerRequest参数，所以
         * TimeHandler类中的方法都必须有一个参数“ServerRequest”
         */
        return route(GET("/times"), timeHandler::sendTimePerSec);
    }
}